package org.zetaframework.base.excel.handler;

import cn.idev.excel.write.handler.SheetWriteHandler;
import cn.idev.excel.write.handler.context.SheetWriteHandlerContext;
import org.apache.poi.ss.usermodel.Sheet;

/**
 * 自定义冻结窗口处理器
 * <p>
 * 说明：<br>
 * 可以设置冻结指定行和列
 *
 * @author gcc
 */
public class FreezePaneHandler implements SheetWriteHandler {
    /** 垂直冻结行数 */
    private final int row;
    /** 水平冻结列数 */
    private final int col;

    /**
     * 表头冻结处理器
     */
    public FreezePaneHandler() {
        // 默认冻结第一行
        this(1, 0);
    }

    /**
     * 自定义冻结窗口处理器
     * <p>
     * 说明：<br>
     * 可以设置冻结指定行和列
     *
     * @param row 垂直冻结行数
     * @param col 水平冻结列数
     */
    public FreezePaneHandler(int row, int col) {
        this.row = row;
        this.col = col;
    }

    /**
     * 在单元格创建之后执行
     */
    @Override
    public void afterSheetCreate(SheetWriteHandlerContext context) {
        Sheet sheet = context.getWriteSheetHolder().getSheet();
        // 冻结行和列
        sheet.createFreezePane(col, row);
    }
}
